/**
* 演示一个Java类，应该包含哪些组成元素
* 结论：创建对象时，各部分的执行顺序：
* 静态变量的声明->静态代码块->成员变量的声明->普通代码块->构造方法
*/
class JavaAttribute {
	// 5.静态变量
	private static int count = 1;

	// 1.成员变量
	private int age = 1;
	private String name;


	// 7.静态代码块
	static {
		System.out.println("静态代码块只初始化一次");
		System.out.println("count = " + count);
		count = 100;
	}

	// 8.普通代码块
	{
		System.out.println("这是一个普通代码块被执行了");
		System.out.println("age = " + age);
		age = 100;
	}

	// 3.构造方法
	public JavaAttribute(){
		System.out.println("无参构造方法被执行了");
		System.out.println("age = " + age);
		age = 10;
		count++;
	}

	// 构造方法在执行new操作的时候执行一次
	public JavaAttribute(int age, String name) {
		System.out.println("有参构造方法被执行了");
		System.out.println("age = " + age);
		this.age = age;
		this.name = name;
		count++;
	}

	// 6.静态方法
	public static void showCount() {
		// 这个功能的业务规则或者程序逻辑，比如：排序
		System.out.println("当前已经创建对象： " + count);
	}

	// 2.成员方法(某个对象的行为)
	public void study(){
		// 这个功能的业务规则或者程序逻辑，比如：排序
		System.out.println("xxx正在学习");
	}

	// 4.封装方法(getter和setter)
	public int getAge() {
		return age;
	}

	// 封装方法是在new之后，可以多次调用
	public void setAge(int age) {
		this.age = age;
	}
	
}